Funktionen für Formeln / Operanden und Operatoren
Operanden
Operanden können Konstanten, Datenfelder oder Formelfelder sein.
- Numerische Konstanten - Konstanten können in dezimaler, binärer, oktaler oder hexadezimaler Schreibweise eingegeben werden.
- Bei der binären Schreibweise ist ein 'b' anzuhängen , bei der oktalen ein 'o' und bei der hexadezimalen ein 'h'.
- Bei gebrochenen Zahlen ist das in Windows eingestellte Dezimalzeichen zu verwenden.
- Ausschliesslich bei der (normalen) dezimalen Schreibweise ist auch eine Darstellung in Exponentialdarstellung möglich. Dabei ist zuerst die Mantisse anzugeben, danach ein 'E' und am Ende der Exponent zur Basis 10.
- Eine vordefinierte Konstante ist pi mit 3.14159... .
- Logische Konstanten - Logikkonstanten sind true und false;
- Zeichenkettenkonstanten / -funktionen - Zeichenkettenkonstanten sind in Anführungszeichen "
einzuschliessen. Innere Anführungszeichen sind zu doppeln.
- user (liefert das zweistellige Benutzerkürzel)
- Datumskonstanten
date (liefert das aktuelle Rechnerdatum)
now (liefert das aktuelle Rechnerdatum mit Zeitangabe) - Konstante für leere Felder - Null-Werte sollten in Formularen nicht an Formelplatzhalter zugewiesen werden. Sie können für die Auswertung von select- und dbf-Anweisungen benutzt werden. Der Vergleich mit anderen Typen liefert stets false.
- Variablen in Formeln (variable Operanden, Datenfelder) werden über Auswahlschalter eingefügt und mit geschweiften Klammern gekennzeichnet. Formelausdrücke können Zeichenketten, Zahlen, Wahrheitswerte und eingeschränkt auch null-Werte (unbestimmt vom Wert und Typ) verarbeiten und als Ergebnis liefern.
Die Verarbeitung von Datums- und Zeitwerten erfolgt
über Zahlen, wobei der ganzzahlige Anteil das Datum und der gebrochene
Anteil den Zeitanteil enthält. So kann man beispielsweise das Datum des
nächsten Tages andrucken, wenn man zur "Datumszahl" eine 1 addiert z.B.:
[V:0:DATS:::0::{System.Datum/Uhrzeit}+1]
[V:0::::0::asdatestring({System.Datum/Uhrzeit}+1;"DD.MM.YYYY")]
Die Abarbeitung erfolgt nach den üblichen Vorrangregeln (Potenzen vor Punktrechnung vor Strichrechnung). Wollen Sie eine bestimmte Abarbeitungsreihenfolge festlegen, müssen Sie runde Klammern benutzen.
Kalkulatorfunktion case
Mithilfe der Funktion case können Sie Formeln erstellen, die mehrere Vergleiche enthalten. Hierfür waren vorher komplizierte, verschachtelte „if“-Anweisungen notwendig. Soll zum Beispiel statt dem Status-Wert ein entsprechender Text ausgegeben werden, kann hierfür eine übersichtliche caseFunktion verwendet werden.
Der erste Parameter ist der Vergleichswert gefolgt von Vergleichen und dem gewünschten Ergebnis. Der letzte Parameter ist das Ergebnis, wenn keine der angegebenen Möglichkeiten übereinstimmt.
Operatoren und Funktionen
Haben Funktionen mehrere Parameter, sind diese durch Semikolon zu trennen.
für numerische Operanden
+ |
Addition (von Zahlen oder Zeichenketten) |
- |
negativer Wert oder Subtraktion |
* |
Multiplikation |
/ |
Division |
mod |
Modulo-Funktion (z.B.: 5 mod 3 ergibt 2) |
div |
ganzzahlige Division (z.B.: 4 div 3 ergibt 1) |
^ |
Potenz, nach Möglichkeit durch Multiplikationen ersetzen (z.B.: 2 ^ 4 ergibt 16) |
! |
Fakultät (z.B.: ! 5 ergibt 1*2*3*4*5=120) |
ln |
natürlicher
Logarithmus (Basis e) |
ld |
Logarithmus zur Basis 2 (z.B.: ld (2) ergibt 1) |
lg |
dekadischer Logarithmus (Basis 10) (z.B.: lg(10) ergibt 1) |
abs |
Absolutbetrag (z.B. abs(-11) ergibt 11) |
int |
ganzzahliger Anteil (z.B.: int(-1,7) ergibt -1) |
sign |
Signumfunktion (Ergebnis ist : -1 für Werte <0, 1 für Werte>0, 0 bei 0) |
frac |
gebrochener Anteil (z.B.: frac(-1,7) ergibt - 0,7) |
floor |
grösste ganze Zahl, die kleiner oder gleich dem angegebenen numerischen Ausdruck ist (z.B.: floor(1,7) ergibt 1) |
ceiling |
kleinste ganze Zahl, die grösser oder gleich dem angegebenen numerischen Ausdruck ist (z.B.: ceiling(1,7) ergibt 2) |
rdm |
Zufallszahl kleiner als der Operand erzeugen (z.B.: rdm(4) liefert 0, 1, 2 oder 3) |
rnd |
Rundung |
rn2 |
Rundung auf 2 Nachkommastellen |
sqrt |
Quadratwurzel |
sin |
Sinusfunktion |
cos |
Kosinusfunktion |
tan |
Tangensfunktion |
cot |
Kotangensfunktion |
not |
logische Negation der Binärwerte |
and |
logische Undverknüpfung der Binärwerte |
ior |
logische Oderverknüpfung der Binärwerte |
xor |
log. Exklusivoderverknüpfung der Binärwerte |
shl |
bitweises Verschieben nach links |
shr |
bitweises Verschieben nach rechts |
für Zeichenketten-Operanden
+ |
Addition (Aneinanderkettung von Zeichenketten) |
* | wird eine Zeichenkette mit einer Zahl > 0 multipliziert erhält
man eine Zeichenkette, in der die ursprüngliche Zeichenkette
vervielfältigt wurde; Faktoren < 0 ergeben eine Aneinanderreihung der gedrehten ursprünglichen Zeichenkette; Beispiele: "0" * (10 - length({Nr})) + {Nr} liefert eine Zeichenkette der Länge 10, in der der Wert von {Nr} linksbündig mit Nullen aufgefüllt wird; "Regal" + lower(("Regal"*(-1))) liefert als Ergebnis Regallager |
upper |
Grossschreibung |
lower |
Kleinschreibung |
substring |
Teilzeichenkette |
replace | ersetzt (nicht rekursiv) alle Vorkommen des zweiten
Zeichenfolgenausdrucks im ersten Zeichenfolgenausdruck durch einen
dritten Ausdruck; 1. Parameter: Ausgangszeichenkette 2. Parameter: Suchzeichenkette 3. Parameter: Ersatzzeichenkette Der 3. Parameter kann zum Löschen aller Vorkommen der Suchzeichenkette aus der Ausgangszeichenkette weggelassen werden. Beispiel: replace("Staumauer";"u";"hl") liefert Stahlmahler |
asfilename | für Dateinamen nicht erlaubte Zeichen
der Ausgangszeichenkette werden durch ein Ersatzzeichen ersetzt; 1. Parameter: Ausgangszeichenkette 2. Parameter: Ersatzzeichen Der 2. Parameter kann weggelassen werden, als Ersatzzeichen wird dann "_" verwendet. Beispiel: asfilename("A < > ? "" : | \ / * Z";"x") liefert "A x x x x x x x x x Z" |
concat | verbindet zwei Zeichenfolgenausdrücke durch einen Verkettungsausdruck; 1. Parameter: eine Zeichenkette 2. Parameter: eine Zeichenkette 3. Parameter: Verkettungszeichenkette Ist eine der Zeichenketten leer, wird die Zeichenkette, die nicht leer ist, ohne Verkettungsausdruck ausgegeben. Beispiel: concat("Mustermann";"Max";",") liefert Mustermann,Max |
newline |
mit dieser Konstante kann ein Zeilenumbruch
innerhalb des aktuellen Platzhalters erzwungen werden |
length | liefert in einem numerischen Ergebnis die Anzahl der Zeichen in der Zeichenkette |
trim | entfernt am Anfang und Ende einer Zeichenkette alle Leer- und Steuerzeichen |
ltrim | entfernt am Anfang einer Zeichenkette alle Leer- und Steuerzeichen |
rtrim | entfernt am Ende einer Zeichenkette alle Leer- und Steuerzeichen |
locate | liefert in einem numerischen
Ergebnis die erste Position der Suchzeichenkette in einer
Ausgangszeichenkette; falls die Suchzeichenkette nicht enthalten ist, ist das Ergebnis 0; 1. Parameter: Suchzeichenkette 2. Parameter: Ausgangszeichenkette |
lines |
liefert die Anzahl der
Zeilen eines Langtextes; |
guid36 | liefert als Ergebnis eine Zeichenkette (36 Zeichen) ohne die führende und
schliessende Klammer 1. Parameter: eine 38-stellige GUID Beispiel: guid36({Kennung}) |
fill | füllt eine Zeichenkette bis zur definierten Länge auf 1. Parameter: Ausgangszeichenkette 2. Parameter: Gesamtlänge (numerisch) 3. Parameter: Füllzeichen(-kette) 4. Parameter: links auffüllen (true); rechts auffüllen (false) der 4. Parameter kann weggelassen werden (Standard ist true) Beispiel: fill(asstring({FreieZahl1});5;"0") fill({Bezeichnung};80;" ";false) |
split | zerteilt eine Zeichenkette in
gleichmässige Teile 1. Parameter: Ausgangszeichenkette 2. Parameter: Anzahl der Zeichen nach der jeweils getrennt werden soll (numerisch). Ist der Parameter kleiner Nuller, erfolgt die Aufsplittung vom Null beginnend. 3. Parameter: Füllzeichen(-kette) der 3. Parameter kann weggelassen werden (Standard ist ein Leerzeichen) Beispiel: split({IBAN};4) |
intersetcount |
mit dieser Funktion lässt sich die Anzahl übereinstimmender Teilzeichenketten zweier Zeichenketten ermitteln 1. Parameter: Zeichenkette (eine "Liste" von Teilzeichenketten) 2. Parameter: Zeichenkette (eine "Liste" von Teilzeichenketten) 3. Parameter: Trennzeichen der 3. Parameter kann weggelassen werden (Standard ist ein |) Beispiel: intersectcount("ABC|D|EF";"G|EF|HM|ABC") liefert den Wert 2 für die Übereinstimmungen von "ABC" und "EF" in beiden Parametern |
für Logikoperanden
not |
logische Negation |
and |
logische Und-Verknüpfung |
ior |
logische Oder-Verknüpfung |
xor |
logische Exklusiv-Oder-Verknüpfung |
if | Fallunterscheidung 1. Parameter: logischer Ausdruck 2. Parameter: Ausdruck beliebigen Formats, welcher das Ergebnis liefert, wenn der 1. Parameter den Wert true besitzt 3. Parameter: Ausdruck beliebigen Formats, welcher das Ergebnis liefert, wenn der 1. Parameter den Wert false besitzt |
case | Die Funktion hat mindestens 4 Parameter, die Anzahl ist dabei immer geradzahlig. Der erste Parameter ist der Wert, welcher verglichen werden soll, der letzte das Ergebnis wenn keine der angegebenen Möglichkeiten übereinstimmt. Die mittleren Parameter sind paarweise ein Wert und das bei Übereinstimmung auszugebende Ergebnis. Beispiel: case({Land};"DE";"Deutschland";"AT";"Österreich";"CH";"Schweiz";"") |
Erkennung und Behandlung von Null-Werten
isnull |
1. Parameter: ein
Ausdruck von beliebigem Format(Zeichenkette, Zahl, Datum,
logisch, Null-Wert) |
Vergleichsoperatoren
(die Operanden müssen vom gleichen Typ sein und liefern ein logisches Ergebnis)
= |
Gleichheit |
<> |
Ungleichheit |
< | kleiner |
> | grösser |
<= | kleiner gleich |
>= | grösser gleich |
Umwandlungsfunktionen
asfloat |
liefert
den numerischen Wert einer Zeichenkette; |
asstring | wandelt einen numerischen Wert in
eine Zeichenkette um; 1. Parameter: Ausgangszahl 2. Parameter: ein Format für die Darstellung wie z.B. "#,##0.00" der 2. Parameter kann weggelassen werden |
asdatestring | wandelt ein Datum in eine
Zeichenkette um; 1. Parameter: Ausgangsdatum 2. Parameter: ein Format für die Darstellung wie z.B."MMM.YYY" der 2. Parameter kann weggelassen werden |
asdatetime | wandelt ein Datum in einen
numerischen Wert (internes Datumsformat, mit dem gerechnet werden
kann) um; ein Parameter vom Typ Zeichenkette: Ausgangsdatum im Windowsformat |
monat |
wandelt einen numerischen Wert zwischen 1 und 12 in den Monatsnamen
um, Werte > 12 bzw. < 1 geben einen Leerstring aus; z.B. monat(6) liefert "Juni" |
xmltag |
wandelt eine Zeichenkette
in das Format UTF8 um und schliesst das Ergebnis in < > ein |
xmlstring | wandelt
eine Zeichenkette in UTF8 um, nachdem zuvor <, > und & ersetzt
wurden Parameter: eine Zeichenkette |
htmlintext |
liefert den Textinhalt eines HTML-Quelltextes Parameter: Ausgangszeichenkette Beispiel: htmlintext({HTMLText}) |
Hilfsfunktionen zum Schreiben von Transact-SQL-Select-Anweisungen
astsqlfloat |
1. Parameter: Zahl |
astsqlnchar |
1. Parameter: Zeichenkette astsqlnchar("123") liefert N'123' |
astsqldate |
1. Parameter: Ausgangsdatum astsqldate(date) liefert z.B. am 1.1.2014 N'01.01.2014' astsqldate(41640) liefert N'01.01.2014' |
astsqlbit |
1. Parameter: logischer Wert astsqlbit(true) liefert 1 |
Hinweis: Die Funktionen liefern als Ergebnis eine Zeichenkette mit einem Leerzeichen am Anfang und am Ende und können zur Unterstützung beim Schreiben von Transact-SQL-Select-Anweisungen in Formeln oder eigenen Blöcken verwendet werden.
Datumsfunktionen
zinstage |
ermittelt die Zinstage
entsprechend der 30tägigen Zinsperiode der Bank; |
zinsmonate |
ermittelt die Zinsmonate; |
zahlungstermin |
ermittelt aus einem Datum und den Angaben der
Zahlungsbedingung einen Termin; |
kweek |
ermittelt die Kalenderwoche; als Parameter ist ein Datum als Variable
z.B. kweek({.Datum}) oder internes Datumsformat anzugeben z.B. kweek(asdatetime("30.12.2012")) |
kyear |
ermittelt das Kalenderjahr zu dem die Kalenderwoche gehört; als
Parameter ist ein Datum als Variable z.B. kyear({.Datum}) oder internes Datumsformat anzugeben z.B. kyear(asdatetime("30.12.2012")) |
Beispiele
für das Datum 30.12.2021 liefert kweek eine 52, kyear die 2021 → der 30.12.2021 gehört zur 52.Kalenderwoche 2021
für das Datum 31.12.2021 liefert kweek eine 1, kyear die 2022 → der 31.12.2021 gehört schon zur 1.Kalenderwoche 2022
Datenbankfunktionen
select | liefert
den Wert eines Tabellenfeldes; als Parameter ist eine select-Anweisung anzugeben, wobei das führende select weggelassen wird; liefert die select-Anweisung keinen Wert zurück, ist das Ergebnis null |
Funktionen zum Lesen u. Schreiben von Variablenwerten
iniput |
schreibt einen Eintrag in eine Ini-Datei oder löscht einen Eintrag;
liefert als Ergebnis einen logischen Wert, ob der Befehl erfolgreich
war: 1. Parameter: Dateiname, Dateinamen ohne Laufwerk beziehen sich auf das Mandantenverzeichnis; 2. Parameter: Sektionsbezeichnung; 3. Parameter: Bezeichnung des Eintrags; 4. Parameter: Zeichenkette, die eingetragen werden soll. Bei Weglassen des 4. Parameters wird ein eventuell vorhandener Eintrag gelöscht. //Eintrag erzeugen: iniput("C:\TEST.INI";"Sektion";"Wert";"100") //Eintrag löschen: iniput("C:\TEST.INI";"Sektion";"Wert") |
iniget |
liest eine Zeichenkette aus einer Ini-Datei: 1. Parameter: Dateiname, Dateinamen ohne Laufwerk beziehen sich auf das Mandantenverzeichnis; 2. Parameter: Sektionsbezeichnung; 3. Parameter: Bezeichnung des Eintrags; 4. Parameter: Ergebnis, wenn die Datei nicht existiert oder kein Eintrag in der Ini-Datei gefunden wird. Bei Weglassen des 4. Parameters ist die leere Zeichenkette der Standardwert. z.B. iniget("C:\TEST.INI";"Sektion";"Wert";"0") |
put |
speichert programmintern
einen Wert, solange das Programm läuft: |
get |
liest
programminterne Werte: |
Spezielle Funktionen
alle Programme
shellexecute | zum Absetzen von Kommandos für das Betriebssystem; 1. Parameter (String): Name des Programms, das geöffnet werden soll 2. Parameter (String): er enthält die Kommandozeilenparameter für das Programm. 3. Parameter (Typ Zahl zwischen 0 und 10): Er ist dafür verantwortlich, in welchem Zustand das Fenster des gerufenen Programms geöffnet werden soll. Als Ergebnis liefert die Funktion eine Zahl, die bei Zahlen kleiner 32 eine Fehlernummer darstellt, der 2. und 3. Parameter kann weggelassen werden |
datenpfad | liefert den Datenpfad mit abschliessenden Backslash |
mandantenpfad | liefert den Mandantenpfad mit abschliessenden Backslash |
nur Auftrag
bestand |
liefert den aktuellen Bestand von Artikeln; als Parameter ist die Artikelnummer als Ausdruck oder Datenbankfeld anzugeben, weitere Parameter für detailliertere Lagerinformationen sind möglich |
bestandpm | liefert den aktuellen Bestand von Artikeln in der Preismengeneinheit; als Parameter ist die Artikelnummer als Ausdruck oder Datenbankfeld anzugeben, weitere Parameter für detailliertere Lagerinformationen sind möglich |
gepackt | liefert den gepackten Bestand von Artikeln; als Parameter ist die Artikelnummer als Ausdruck oder Datenbankfeld anzugeben, weitere Parameter für detailliertere Lagerinformationen sind möglich |
bestellt | liefert die aktuell bestellte Menge von Artikeln; 1. Parameter: die Artikelnummer 2. Parameter: der Standort als Ausdruck oder Datenbankfeld, der 2. Parameter kann weggelassen werden |
inproduktion | liefert die Menge von Artikeln, die produziert wird;
1. Parameter: die Artikelnummer 2. Parameter: der Standort als Ausdruck oder Datenbankfeld, der 2. Parameter kann weggelassen werden |
reserviert | liefert die aktuell reservierte Menge von Artikeln; 1. Parameter: die Artikelnummer 2. Parameter: der Standort als Ausdruck oder Datenbankfeld, der 2. Parameter kann weggelassen werden |
listenpreis |
liefert
den aktuellen Listenpreis von Artikeln; |
kalkulationspreis | liefert den aktuellen Kalkulationspreis von Artikeln; als Parameter ist die Artikelnummer als Ausdruck oder Datenbankfeld anzugeben. |
belegtyp | liefert die Beschreibung des Belegtyps; als Parameter ist der Belegtyp anzugeben. |
belegadresskuerzel | liefert das Adresskürzel des Belegtyps (z.B. "KU" bei Kundenbelegen); als Parameter ist der Belegtyp anzugeben. |
belegeafaktor | liefert
die Information zur Interpretation von RNetto (z.B. bei Rechnungen
+1, bei Gutschriften -1); als Parameter ist der Belegtyp als Ausdruck oder Datenbankfeld anzugeben |
mwst | liefert
die Steuerprozente eines Steuerschlüssels zum aktuellen Datum; als Parameter ist der Steuerschlüssel als Ausdruck oder Datenbankfeld anzugeben |
checksumpost | berechnet eine spezielle Prüfziffer; der Parameter muss eine Zeichenkette mit 11 Ziffern liefern |
projektsumme | liefert in Abhängigkeit vom Preistyp des Projektes die Netto- oder
Bruttoprojektsumme; als Parameter ist die Nummer des Projektes anzugeben |
preisgruppenbezeichnung | liefert die Bezeichnung einer Preisgruppe; als Parameter ist dabei die Nummer der Preisgruppe als Zahl oder Zeichenkette zu übergeben |
Beispiele
bestellt({Artikelnummer};"1") liefert die für den Standort "1" bestellte
Menge des vom Datenfeld "Artikelnummer" ausgegebenen Artikel
bestand("500009";"1";"500,1,1") liefert den Bestand des Artikels "500009"
auf dem Lagerplatz "500,1,1," des Flächenlagers "500" im Standort "1".
shellexecute("notepad";"c:\test.txt";3) öffnet die Datei c:\test.txt im
maximierten NotePad.
Diese speziellen Funktionen sind über Formelplatzhalter in jeder Druckvorlage anwendbar, in denen die benötigten Parameter zur Verfügung stehen.